home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / bell212.arc / TAGC.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-07-25  |  11.1 KB  |  270 lines

  1.        TITL 'AUTOMATIC GAIN UPDATE CODE'
  2.        IDT  'AGCUPT'
  3.        OPTION XREF,TUNLST
  4. ***************************************************************
  5. *  This is the software automatic gain control factor update. *
  6. *  The routine keeps a running average plus three baud max's  *
  7. *  to generate each new AGC update.  Once the value is gained *
  8. *  the routine uses a table lookup devide to force the filter *
  9. *  data max's into a tight range.                             *
  10. *                                  *
  11. *  WRITTEN BY PETER EHLIG   12/02/85                  *
  12. *  REVISION 1.0                           *
  13. *                                  *
  14. *  COPYRIGHT TEXAS INSTRUMENTS,  07/25/86              *
  15. *                                  *
  16. ***************************************************************
  17.        DEF  AGCUPT
  18.        REF  DEMOD,AGCTBL
  19.        PAGE
  20. ********------------------------------------------********
  21. *****        DATA MEMORY USED.                 *****
  22. ********------------------------------------------********
  23. SPAR0  EQU  0
  24. SPAR1  EQU  1
  25. SPAR2  EQU  2
  26. H8000  EQU  3           # DIALER ROUNDING FACTOR
  27. ONE    EQU  4           I# VALUE 1 HELD FOR MASKING
  28. MASK1  EQU  5           I# SWAVE MACRO TBL RANGE ADJ >7F
  29. MASK2  EQU  6           I# SWAVE MACRO TBL RANGE ADJ >7FFF
  30. MASK3  EQU  7           # XMIT PHASE ENCODE MASK >0006
  31. OFSET0 EQU  8           I# SWAVE MACRO POINT TO COS TABLE
  32. XMTOUT EQU  9           % XMIT HOLD FOR TRANSMIT OUTPUT
  33. XDIBIT EQU  10           # XMIT DIBIT ISOLATION MASK
  34. PLUS1  EQU  11           I# +1 Q12 >FFF & MASK VALUE
  35. XMTD   EQU  12           % XMIT HOLD DTE INPUT
  36. RECST  EQU  13           I% RECEIVER STATUS
  37. BSMAX  EQU  14         & I% BAUD SIGNAL 0AX
  38. LASTM  EQU  14         & % LAST MAX SIGNAL IN 300BPS
  39. SAMPLE EQU  15           % BAUD LIMIT SAMPLE COUNT
  40. SAMXMT EQU  16           % TRANSMITTER SAMPLE COUNT
  41. BITOUT EQU  17           % DIBIT POSITIONED TO XMIT/7742
  42. RDIBIT EQU  18           % DECODED DIBIT
  43. SPAR3  EQU  19
  44. MINUS1 EQU  20           I# >F000 MASK FOR Q12 FORMAT
  45. TEMP   EQU  21           * MISC. TEMPERORY REGISTER
  46. XMTHLD EQU  22           % BIASED TRANSMIT DATA
  47. RECHLD EQU  23           % BIASED RECEIVE DATA
  48. DBUGC  EQU  24           @ COUNT BAUD CYCLES FOR DEBUG
  49. DBUGC2 EQU  25           @ ERROR BAUD DELAY COUNT
  50. HIST1  EQU  26           @ DEBUG DESCRAMBLER
  51. HIST2  EQU  27           @ DEBUG DESCRAMBLER
  52. DPOINT EQU  28           @ BAUD EDGE POINTER
  53. SPAR4  EQU  29
  54. SPAR5  EQU  30
  55. SPAR6  EQU  31
  56. RDELTA EQU  32         & % RECEIVE SINE TABLE STEP
  57. TALF1  EQU  32         & % DTMF TONE 1 SINE TABLE STEP
  58. RALPHA EQU  33         & % RECEIVER CURRENT SINE ANGLE
  59. FRACT1 EQU  33         & % DTMF TONE 1 CURRENT ANGLE
  60. SINA   EQU  34         & % SINE TABLE READING
  61. TONE1  EQU  34         & % DTMF TONE 1 READING
  62. XDELTA EQU  35         & % TRANSMIT SINE TABLE STEP
  63. TALF2  EQU  35         & % DTMF TONE 2 SINE TABLE STEP
  64. XALPHA EQU  36         & % TRANSMIT CURRENT SINE ANGLE
  65. FRACT2 EQU  36         & % DTMF TONE 2 CURRENT ANGLE
  66. COSA   EQU  37         & % COSINE TABLE READING
  67. TONE2  EQU  37         & % DTMF TONE 2 READING
  68. SPAR7  EQU  38
  69. SPAR8  EQU  39
  70. SPAR9  EQU  40
  71. SPAR10 EQU  41
  72. SPAR11 EQU  42
  73. SPAR12 EQU  43
  74. SPAR13 EQU  44
  75. OFSET1 EQU  45           # XMIT POINT TO DIBIT ENCODE TABLE
  76. XPTR   EQU  46           # XMIT POINT TO RAISED COS TABLE
  77. INDXPH EQU  47           I# XMIT POINT TO PHASE ENCODE TABLE
  78. RPHSE  EQU  48           I# OFFSET FOR RECEIVE PHASE DECODE
  79. RBUF0  EQU  49         & % FILTER DATA 49-85
  80. FILIN  EQU  49         & % INPUT TO 300BPS MODEM
  81. RBUF1  EQU  50         & % RECEIVE BPF  COEFFICIENT
  82. *
  83. COEFBP EQU  50         & % 50-99 COEFS FOR 300BPS FILTERS
  84. *
  85. RBUF2  EQU  51           % RECEIVE BPF  COEFFICIENT
  86. RBUF3  EQU  52           % RECEIVE BPF  COEFFICIENT
  87. RBUF4  EQU  53           % RECEIVE BPF  COEFFICIENT
  88. RBUF5  EQU  54           % RECEIVE BPF  COEFFICIENT
  89. RBUF6  EQU  55           % RECEIVE BPF  COEFFICIENT
  90. RBUF7  EQU  56           % RECEIVE BPF  COEFFICIENT
  91. RBUF8  EQU  57           % RECEIVE BPF  COEFFICIENT
  92. RBUF9  EQU  58           % RECEIVE BPF  COEFFICIENT
  93. RBUF10 EQU  59           % RECEIVE BPF  COEFFICIENT
  94. RBUF11 EQU  60           % RECEIVE BPF  COEFFICIENT
  95. RBUF12 EQU  61           % RECEIVE BPF  COEFFICIENT
  96. RBUF13 EQU  62           % RECEIVE BPF  COEFFICIENT
  97. RBUF14 EQU  63           % RECEIVE BPF  COEFFICIENT
  98. RBUF15 EQU  64           % RECEIVE BPF  COEFFICIENT
  99. RBUF16 EQU  65           % RECEIVE BPF  COEFFICIENT
  100. RBUF17 EQU  66           % RECEIVE BPF  COEFFICIENT
  101. RBUF18 EQU  67           % RECEIVE BPF  COEFFICIENT
  102. RBUF19 EQU  68           % RECEIVE BPF  COEFFICIENT
  103. RBUF20 EQU  69           % RECEIVE BPF  COEFFICIENT
  104. RBUF21 EQU  70           % RECEIVE BPF  COEFFICIENT
  105. RBUF22 EQU  71           % RECEIVE BPF  COEFFICIENT
  106. RBUF23 EQU  72           % RECEIVE BPF  COEFFICIENT
  107. RBUF24 EQU  73           % RECEIVE BPF  COEFFICIENT
  108. RBUF25 EQU  74           % RECEIVE BPF  COEFFICIENT
  109. RBUF26 EQU  75           % RECEIVE BPF  COEFFICIENT
  110. RBUF27 EQU  76           % RECEIVE BPF  COEFFICIENT
  111. RBUF28 EQU  77           % RECEIVE BPF  COEFFICIENT
  112. RBUF29 EQU  78           % RECEIVE BPF  COEFFICIENT
  113. RBUF30 EQU  79           % RECEIVE BPF  COEFFICIENT
  114. RBUF31 EQU  80           % RECEIVE BPF  COEFFICIENT
  115. RBUF32 EQU  81           % RECEIVE BPF  COEFFICIENT
  116. RBUF33 EQU  82           % RECEIVE BPF  COEFFICIENT
  117. RBUF34 EQU  83           % RECEIVE BPF  COEFFICIENT
  118. RBUF35 EQU  84           % RECEIVE BPF  COEFFICIENT
  119. RBUF36 EQU  85           % RECEIVE BPF  COEFFICIENT
  120. XIOUT  EQU  86           % XMIT HOLD FILTERED I VALUE
  121. XQOUT  EQU  87           % XMIT HOLD FILTERED Q VALUE
  122. XOLDPH EQU  88           % XMIT HOLD LAST PHASE
  123. XNEWPH EQU  89           % XMIT HOLD NEW PHASE
  124. ERRSIG EQU  90           % FILTERED CARRIER ERROR SIGNAL
  125. PLL1   EQU  91           I% CARRIER RECOVERY PLL FILTER COEFFICIENT1
  126. PLL2   EQU  92           I% CARRIER RECOVERY PLL FILTER COEFFICIENT2
  127. SIGNI  EQU  93           % SIGN OF I CHANNEL (TO COMPUTE ERROR)
  128. SIGNQ  EQU  94           % SIGN OF Q CHANNEL (TO COMPUTE ERROR)
  129. ERROR  EQU  95           % SIGNI*(Q)-SIGNQ*(I) = ERROR
  130. ERNM1  EQU  96           I% PLL TAPS
  131. CTRND  EQU  97           I% CARRIER SHIFT TRENDS
  132. TRNDCT EQU  98           I% CARRIER TREND BAUD COUNT
  133. ISUM   EQU  99           % FILTERED/PHASE SHIFTED SAMPLE
  134. QSUM   EQU  100      & % FILTERED/PHASE SHIFTED SAMPLE
  135. *
  136. DLYBUF EQU  100      & % 100-119 DATA DELAY/300BPS MODEM
  137. *
  138. RECI   EQU  101        % BASEBAND I CHANNEL
  139. RECQ   EQU  102        % BASEBAND Q CHANNEL
  140. ENRGY  EQU  103        % CURRENT ENERGY
  141. PENRGY EQU  104        % PREVIOUS ENERGY
  142. ERNM2  EQU  105        I% CLOCK RECOVERY PLL TAPS
  143. BERROR EQU  106        %  CALCULATED BAUD ERROR
  144. BEROUT EQU  107        %  SCALED/FILTERED BAUD ERROR
  145. BPLL1  EQU  108        I# BAUD PLL COEF
  146. BPLL2  EQU  109        I# BAUD PLL COEF
  147. TRSHD1 EQU  110        I# THRESHOLD FOR CARRIER RECOVERY
  148. TRSHD2 EQU  111        I# THRESHOLD FOR BAUD RECOVERY
  149. XIBUF0 EQU  112        % XMIT STORE DATA FOR RAISED COS
  150. XIBUF1 EQU  113        % XMIT STORE DATA FOR RAISED COS
  151. XIBUF2 EQU  114        % XMIT STORE DATA FOR RAISED COS
  152. XQBUF0 EQU  115        % XMIT STORE DATA FOR RAISED COS
  153. XQBUF1 EQU  116        % XMIT STORE DATA FOR RAISED COS
  154. XQBUF2 EQU  117        % XMIT STORE DATA FOR RAISED COS
  155. CX0    EQU  118        # XMIT COEF FOR RAISED COS
  156. CX1    EQU  119        # XMIT COEF FOR RAISED COS
  157. CX2    EQU  120      & # XMIT COEF FOR RAISED COS
  158. BPCOEF EQU  120      & % VAR POINTER TO 300BPS COEFS
  159. ROLDPH EQU  121      & I% PREVIOUS ABSOLUTE PHASE (QUADRANT)
  160. TMDLY  EQU  121      & % DELAY COUNTER REGISTER
  161. RNEWPH EQU  122      & % CURRENT  ABSOLUTE PHASE (QUADRANT)
  162. FSP1   EQU  122      & % SPACE FILTER ENERGY
  163. AGC    EQU  123      & I% AUTOMATIC GAIN FACTOR
  164. FMK1   EQU  123      & % MARK FILTER ENERGY
  165. AGCRA  EQU  124      & I% SIGNAL MAX RUNNING AVERAGE FOR AGC
  166. BIT103 EQU  124      & * HOLD REGISTER FOR DATA BIT
  167. AGCOFF EQU  125      & I% AGC CALCULATION LOOKUP TABLE
  168. MARK1  EQU  125      & * MARK STEP VALUE 300BPS MODEM
  169. AGCNT  EQU  126      & I% BAUD SAMPLE COUNT
  170. SPACE1 EQU  126      & I* SPACE STEP VALUE 300BPS MODEM
  171. AGCLEV EQU  127        % TEMPORARY AGC LEVEL (AGCUPT)
  172. *---------------
  173.        PAGE
  174. *
  175. ***************************************************************
  176. *  GAIN FACTOR UPDATE CODE                      *
  177. ***************************************************************
  178. AGCUPT EQU  $
  179.        CALL DEMOD    DEMODULATE TO CONTINUE PLOT
  180.        ZALH AGCRA    ADD THE NEW BSMAX VALUE
  181.        ADD  BSMAX,14    TO THE RUNNING AVERAGE
  182.        SACH AGCRA    AND SAVE IT
  183.        LAC  AGCNT    DECREMENT RUNNING AVERAGE COUNT
  184.        SUB  ONE     SAVE IT AND
  185.        SACL AGCNT    CHECK FOR ZERO
  186.        SACH BSMAX    ZERO OUT RUNNING SIGNAL MAX
  187.        BZ   OVROUT    IF ZERO THEN UPDATE AGC
  188.        RET        ELSE RETURN TO CALLING SEQUENCE
  189. OVROUT LACK 3        RESET RUNNING AVERAGE COUNT
  190.        SACL AGCNT    TO THREE
  191.        LAC  AGCRA    MOVE AGCRA
  192.        SACL AGCLEV    TO THE CALCULATION LEVEL
  193.        LAC  AGCRA,14    DIVIDE RUNNING AVERAGE SUM
  194.        SACH AGCRA    BY 4 TO GET NEW RUNNING AVERAGE
  195.        LAC  AGCLEV    GET AVERAGE MAX SIGNAL LEVEL
  196.        SUB  ONE,14    COMPARE TO 16384
  197.        BLZ  ASHF1    IF LESS THAN SHIFT TABLE LOOKUP
  198.        LAC  AGCLEV,7    GET LOOKUP VALUE
  199.        SACH TEMP    MOVE LOOKUP VALUE TO
  200.        LAC  TEMP    THE LOW HALF OF THE ACC
  201.        ADD  AGCOFF    ADD IN TABLE OFFSET
  202.        TBLR AGC     AND GET AGC VALUE
  203.        LAC  AGC,15    DIVIDE THE AGC VALUE
  204.        SACH AGC     BY 2 TO FORCE TO Q14 MODE
  205.        RET        RETURN TO CALLING SEQUENCE
  206. ASHF1  ADD  ONE,13    COMPARE TO 8192
  207.        BLZ  ASHF2    IF LESS THAN SHIFT TABLE LOOKUP
  208.        LAC  AGCLEV,8    GET LOOKUP VALUE
  209.        SACH TEMP    MOVE LOOKUP VALUE TO
  210.        LAC  TEMP    THE LOW HALF OF THE ACC
  211.        ADD  AGCOFF    ADD IN TABLE OFFSET
  212.        TBLR AGC     AND GET AGC VALUE
  213.        RET        RETURN TO CALLING SEQUENCE
  214. ASHF2  ADD  ONE,12    COMPARE TO 4096
  215.        BLZ  ASHF3    IF LESS THAN SHIFT TABLE LOOKUP
  216.        LAC  AGCLEV,9    GET LOOKUP VALUE
  217.        SACH TEMP    MOVE LOOKUP VALUE TO
  218.        LAC  TEMP    THE LOW HALF OF THE ACC
  219.        ADD  AGCOFF    ADD IN TABLE OFFSET
  220.        TBLR AGC     AND GET AGC VALUE
  221.        LAC  AGC,1    AGC VALUE * 2 TO ADJUST
  222.        SACL AGC     FOR LOWER SIGNAL STRENGTH
  223.        RET        RETURN TO CALLING SEQUENCE
  224. ASHF3  ADD  ONE,11    COMPARE TO 2048
  225.        BLZ  ASHF4    IF LESS THAN SHIFT TABLE LOOKUP
  226.        LAC  AGCLEV,10    GET LOOKUP VALUE
  227.        SACH TEMP    MOVE LOOKUP VALUE TO
  228.        LAC  TEMP    THE LOW HALF OF THE ACC
  229.        ADD  AGCOFF    ADD IN TABLE OFFSET
  230.        TBLR AGC     AND GET AGC VALUE
  231.        LAC  AGC,2    AGC VALUE * 4 TO ADJUST
  232.        SACL AGC     FOR LOWER SIGNAL STRENGTH
  233.        RET        RETURN TO CALLING SEQUENCE
  234. ASHF4  ADD  ONE,10    COMPARE TO 1024
  235.        BLZ  ASHF5    IF LESS THAN SHIFT TABLE LOOKUP
  236.        LAC  AGCLEV,11    GET LOOKUP VALUE
  237.        SACH TEMP    MOVE LOOKUP VALUE TO
  238.        LAC  TEMP    THE LOW HALF OF THE ACC
  239.        ADD  AGCOFF    ADD IN TABLE OFFSET
  240.        TBLR AGC     AND GET AGC VALUE
  241.        LAC  AGC,3    AGC VALUE * 8 TO ADJUST
  242.        SACL AGC     FOR LOWER SIGNAL STRENGTH
  243.        RET        RETURN TO CALLING SEQUENCE
  244. ASHF5  ADD  ONE,9    COMPARE TO 512
  245.        BLZ  ASHF5    IF LESS THAN SHIFT TABLE LOOKUP
  246.        LAC  AGCLEV,12    GET LOOKUP VALUE
  247.        SACH TEMP    MOVE LOOKUP VALUE TO
  248.        LAC  TEMP    THE LOW HALF OF THE ACC
  249.        ADD  AGCOFF    ADD IN TABLE OFFSET
  250.        TBLR AGC     AND GET AGC VALUE
  251.        LAC  AGC,4    AGC VALUE * 16 TO ADJUST
  252.        SACL AGC     FOR LOWER SIGNAL STRENGTH
  253.        RET        RETURN TO CALLING SEQUENCE
  254. ASHF6  ADD  ONE,5    COMPARE TO 32
  255.        BLZ  NOEDT    LOST MINIMUM ENERGY LEVEL
  256.        LAC  AGCLEV,13    GET LOOKUP VALUE
  257.        SACH TEMP    MOVE LOOKUP VALUE TO
  258.        LAC  TEMP    THE LOW HALF OF THE ACC
  259.        ADD  AGCOFF    ADD IN TABLE OFFSET
  260.        TBLR AGC     AND GET AGC VALUE
  261.        LAC  AGC,5    AGC VALUE * 32 TO ADJUST
  262.        SACL AGC     FOR LOWER SIGNAL STRENGTH
  263.        RET        RETURN TO CALLING SEQUENCE
  264. NOEDT  LACK >DF     PASSBAND SIGNAL TOOL LOW
  265.        AND  RECST    DISABLE SIGNAL ENERGY DETECT
  266.        SACL RECST    AND CARRIER DETECT SIGNAL
  267.        RET        RETURN TO CALLING SEQUENCE
  268. *
  269.        END
  270.